fixed bug with &#x handling that caused spurious XML parsing errors.
authorparkrrrr <parkrrrr@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 21 Jan 2004 15:52:10 +0000 (15:52 +0000)
committerparkrrrr <parkrrrr@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 21 Jan 2004 15:52:10 +0000 (15:52 +0000)
gpsbabel/gpx.c
gpsbabel/util.c

index b05518b5799c3f7529caa95e4580f2e0d5342b83..7dff24541f969432c4159bdd52c3c9400dc15e17 100644 (file)
@@ -822,12 +822,12 @@ gpx_read(void)
                                        char *hexit = badchar+3;
                                        semi = strchr( badchar, ';' );
                                        if ( semi ) {
-                                               *semi = '\0';
-                                               while (*hexit) {
+                                               while (*hexit && *hexit != ';') {
                                                        val *= 16;
                                                        val += strchr( hex, *hexit )-hex;
                                                        hexit++;
                                                }
+                                               
                                                if ( val < 32 ) {
                                                        warning( MYNAME ": Ignoring illegal character %s;\n\tConsider emailing %s at <%s>\n\tabout illegal characters in their GPX files.\n", badchar, gpx_author?gpx_author:"(unknown author)", gpx_email?gpx_email:"(unknown email address)" );
                                                        memmove( badchar, semi+1, strlen(semi+1)+1 );
index e48382e2add300dd8f2f939c342a0b465f1fc531..a89f96a4fc7c0bf80ab1c6fbb406a66e1a124bfa 100644 (file)
@@ -676,7 +676,7 @@ char * xml_entitize(const char * str)
                        
                        utf8_to_int( cp, &bytes, &value );
                        cp += bytes-1;
-                       elen += sprintf( tmpsub, "&#%d;", value ) - bytes;
+                       elen += sprintf( tmpsub, "&#x%x;", value ) - bytes;
                        nsecount++;     
                }
        }
@@ -721,7 +721,7 @@ char * xml_entitize(const char * str)
                                else {
                                        xstr = NULL;
                                }
-                               sprintf( p, "&#%d;", value );
+                               sprintf( p, "&#x%x;", value );
                                p = p+strlen(p);
                                if ( xstr ) {
                                        strcpy( p, xstr );